/*
  jQuery MegaMenu Plugin
  Author: GeekTantra
  Author URI: http://www.geektantra.com
*/
var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

jQuery.fn.megamenu = function(options) {
  options = jQuery.extend({
                              activate_action: "mouseover",
                              deactivate_action: "mouseleave",
                              show_method: "slideDown",
                              hide_method: "slideUp",
                              justify: "left",
                              enable_js_shadow: false,
                              shadow_size: 3,
                              mm_timeout: 250
                          }, options);
  var $megamenu_object = this;
  if( options.activate_action == "click" ){options.mm_timeout = 0;}
  $megamenu_object.children("li").each(function(){
    jQuery(this).addClass("top_menu_item");
  	jQuery(this).find("a:first").addClass("top_menu_item_link");
  	var $mm_item_link = jQuery(this).find(".top_menu_item_link");
  	$mm_item_link.each(function(e){$(this).attr('title','');});
  	// nur wenn Kategorie nicht leer
  	if(jQuery(this).find("ul").length > 0) {
	    jQuery(this).find("div:first").addClass("top_menu_content");
	    var $mm_item_content = jQuery(this).find(".top_menu_content");
	    var $mm_item_link = jQuery(this).find(".top_menu_item_link");
	    
	    $mm_item_content.hide();
	    
	    jQuery(document).bind("click", function(){
	      jQuery(".top_menu_content").hide();
	      jQuery(".top_menu_item_link").removeClass("top_menu_item_link_hover");
	    });
	    jQuery(this).bind("click", function(e){
	      e.stopPropagation();
	    });
	    $mm_item_content.wrapInner('<div class="top_menu_content_base"></div>');
	    if(options.enable_js_shadow == true) {
	      $mm_item_content.append('<div class="mm-js-shadow"></div>');
	    }
	    var $mm_timer = 0;
	    jQuery(this).bind(options.activate_action, function(e){
	      e.stopPropagation();
	      var mm_item_link_obj = jQuery(this).find("a.top_menu_item_link");
	      var mm_item_content_obj = jQuery(this).find("div.top_menu_content");
	      clearTimeout($mm_timer);
	      $mm_timer = setTimeout(function(){ //Emulate HoverIntent
	        mm_item_link_obj.addClass("top_menu_item_link_hover");
	        mm_item_content_obj.css({
	          'top': ($mm_item_link.offset().top + $mm_item_link.outerHeight())-10 +"px",
	          'left' : 0 + 'px'
	        });
	        
	        if(options.justify == "left"){
	          var mm_object_right_end = $megamenu_object.offset().left + $megamenu_object.outerWidth();
	                                    // Coordinates of the right end of the megamenu object
	          var mm_content_right_end = $mm_item_link.offset().left + $mm_item_content.outerWidth() - 5 ;
	                                    // Coordinates of the right end of the megamenu content
	          if( mm_content_right_end >= mm_object_right_end ) { // Menu content exceeding the outer box
	            mm_item_content_obj.css({
	              'left': 0 + 'px'
	            }); // Limit megamenu inside the outer box
	          }
	        } else if( options.justify == "right" ) {
	          var mm_object_left_end = $megamenu_object.offset().left;
	                                    // Coordinates of the left end of the megamenu object
	          var mm_content_left_end = $mm_item_link.offset().left - mm_item_content_obj.outerWidth() + 
	                                    $mm_item_link.outerWidth() + 5;
	                                    // Coordinates of the left end of the megamenu content
	          if( mm_content_left_end <= mm_object_left_end ) { // Menu content exceeding the outer box
	            mm_item_content_obj.css({
	              'left':0 + 'px'
	            }); // Limit megamenu inside the outer box
	          } else {
	            mm_item_content_obj.css({
	              'left': 0 + 'px'
	            }); // Limit megamenu inside the outer box
	          }
	        }
	        if(options.enable_js_shadow == true) {
	          mm_item_content_obj.find(".mm-js-shadow").height( mm_item_content_obj.height() );
	          mm_item_content_obj.find(".mm-js-shadow").width( mm_item_content_obj.width() );
	          mm_item_content_obj.find(".mm-js-shadow").css({
	            'top': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
	            'left': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
	            'opacity': 0.5
	          });
	        }
	        switch(options.show_method) {
	          case "simple":
	                mm_item_content_obj.show();
	                break;
	          case "slideDown":
	                mm_item_content_obj.height("auto");
	                /* mm_item_content_obj.height(mm_item_content_obj.height());*/
	                mm_item_content_obj.slideDown('fast');
	                break;
	          case "fadeIn":
	                mm_item_content_obj.fadeTo('fast', 1);
	                break;
	          default:
	                mm_item_content_obj.each( options.show_method );
	                break;
	        }
	      }, options.mm_timeout);
	    });
	    // Activation Method Ends
	    // Deactivation Method Starts
	    jQuery(this).bind(options.deactivate_action, function(e){
	      e.stopPropagation();
	      clearTimeout($mm_timer);
	      var mm_item_link_obj = jQuery(this).find("a.top_menu_item_link");
	      var mm_item_content_obj = jQuery(this).find("div.top_menu_content");
	//      mm_item_content_obj.stop();
	      switch(options.hide_method) {
	        case "simple":
	              mm_item_content_obj.hide();
	              mm_item_link_obj.removeClass("top_menu_item_link_hover");
	              break;
	        case "slideUp":
	              mm_item_content_obj.slideUp( 'fast',  function() {
	                mm_item_link_obj.removeClass("top_menu_item_link_hover");
	              });
	              break;
	        case "fadeOut":
	              mm_item_content_obj.fadeOut( 'fast', function() {
	                mm_item_link_obj.removeClass("top_menu_item_link_hover");
	              });
	              break;
	        default:
	              mm_item_content_obj.each( options.hide_method );
	              mm_item_link_obj.removeClass("top_menu_item_link_hover");
	              break;
	      }
	      if(mm_item_content_obj.length < 1) mm_item_link_obj.removeClass("top_menu_item_link_hover");
	    });
		//    Deactivation Method Ends
	} else {
		jQuery(this).find("div:first").remove();
	}
  });
  this.find(">li:last").after('<li class="clear-fix"></li>');
  this.show();
};
$(function(){$(".top_navigation").megamenu();});